#ifndef __WIZ_BNF_ACTION_PUSHBACK_HPP__SHANHAOBO_19800429__
#define __WIZ_BNF_ACTION_PUSHBACK_HPP__SHANHAOBO_19800429__

#include "./WizBNFActionRefValueActor.hpp"

namespace Wiz
{
    namespace BNF
    {
        namespace Action
        {
            namespace PushBack
            {
                struct Type
                {
                    template< typename T, typename ValueT>
                    ::Wiz::Void::Type Act(T& Ref, ValueT const& Val) const
                    {
                        Ref.PushBack(Val);
                    }
                    template< typename T, typename IteratorT>
                    ::Wiz::Void::Type Act(T& Ref, IteratorT const& Frst, IteratorT const& Lst) const
                    {
                        typedef typename T::tValue tValue;
                        Ref.PushBack(tValue(Frst, Lst));
                    }
                };
            } /// end of namespace PushBack
            namespace Predef
            {
                template<typename T>
                WIZ_INLINE ::Wiz::BNF::Action::RefValueActor::Type<T, ::Wiz::BNF::Action::PushBack::Type> PushBack(T& Ref)
                {
                    return ::Wiz::BNF::Action::RefValueActor::Type<T,::Wiz::BNF::Action::PushBack::Type>(Ref);
                }
            } /// end of namespace Predef
        } /// end of namespace Action
    } /// end of namespace BNF
} /// end of namespace Wiz

#endif /*__WIZ_BNF_ACTION_PUSHBACK_HPP__SHANHAOBO_19800429__*/
